######################################################
# 基本操作
######################################################

1+2+3
1+2*3

# c combine合并
c(1, 2, 3, 4, 5)
1:50

# 向量计算
c(1, 2, 3, 4) + c(10, 20, 30, 40)
c(1, 2, 3, 4) - c(10, 20, 30, 40)
c(1, 2, 3, 4) * c(10, 20, 30, 40)
c(1, 2, 3, 4) / c(10, 20, 30, 40)

# 重复补齐 
# c(10, 20) -> c(10, 20, 10, 20)
c(1, 2, 3, 4) + c(10, 20) 
# 1 -> c(1, 1, 1, 1)
c(1, 2, 3, 4) + 1
1 / c(1, 2, 3, 4)
# Warning message: 必须是整数倍，否则警告
c(1, 2, 3) + c(1, 1)

# 字符串
c("hello", "world")

######################################################
# 函数
######################################################
exp(1)
log2(4)
log(x = 64, base = 4)
2^3
3 == 4

######################################################
# 变量
######################################################
x <- 1
y <- 2
z <- c(x, y)
y <- 4
z
z[1]
z[1:2]
z[z %% 2 == 0]
z[c(1,2)]
z[c(2,1)]

one <- 1
two <- 2
one = two

f = function(x, y){ c(x+1, y+2) }
f(1, 2)
f

######################################################
# 数据结构
######################################################
# 数组
a <- array(c(1, 2, 3, 4, 5, 6), dim = c(2, 3))
a
a[1,1]
# 矩阵
m <- matrix(data = c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)
m
m[1,]
# 列表
e <- list(thing = "hat", size = "8.25")
e
e$thing
e[1]
g <- list("helloworld", e)
# 数据框
teams <- c("PHI", "NYM", "FLA", "ATL", "WSN")
w <- c(92, 89, 94, 72, 59)
l <- c(70, 73, 77, 90, 102)
nleast <- data.frame(teams, w, l)
nleast
nleast$teams
nleast$w
nleast$l[nleast$teams == "FLA"]

######################################################
# 对象和类
######################################################
class(nleast)
class(nleast$teams)
class(nleast$w)
# 类可以自定义print方法
print(x)

######################################################
# 模型和公式
######################################################
# 公式对象
y ~ x1 + x2 + x3 + x4
# 速度和刹车距离
cars
cars.lm <- lm(formula = dist~speed, data = cars)
cars.lm
summary(cars.lm)

######################################################
# 图表
######################################################
install.packages("nutshell")
library(nutshell)
data(field.goals)
names(field.goals)
hist(field.goals$yards)
help(hist)
example(hist)
